/**
 * 表单验证：验证用户名、密码、邮箱
 * 1. 安装 @api/joi和 @escook/exprees-joi
 * 2. 其中 @api/joi是一个专门为表单中携带的每个数据项定义验证规则，@escook/exprees-joi类实现自动对表单数据进行验证
 */

const joi = require('@hapi/joi')

/**
 * string() 限制数据类型为字符串
 * alphanum() 限制数据只能是字母和数字
 * min() 限制字符串最小长度
 * max() 限制字符串最大长度
 * required() 限制数据项必填
 * email() 限制数据项必须是邮箱格式
 * pattern() 限制数据项必须符合正则规则
 * messages() 自定义错误提示信息
 */

const username = joi.string().alphanum().min(3).max(10).required()
    .messages({
        'string.base': '用户名必须是字符串',
        'string.alphanum': '用户名必须是字母或数字',
        'string.min': '用户名长度不能小于3',
        'string.max': '用户名长度不能大于10',
        'any.required': '用户名是必填项'
    }) // 自定义错误提示信息

const password = joi
    .string()
    .required()
    .pattern(/^[\w@#]{6,20}$/)
    .messages({
        'string.base': '密码必须是字符串',
        'string.empty': '密码不能为空',
        'string.pattern.base': '密码不符合规则',
        'any.required': '密码是必填项'
    })

exports.reg_login_schema = {
    body: {
        username,
        password
    }
}    